home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-08-21 | 4.4 KB | 151 lines |
- 10 '*************************************************
- 20 ' BIORHYTHMS
- 30 '*************************************************
- 40 '
- 50 KEY OFF: SCREEN 0: WIDTH 80
- 60 '
- 70 DIM MON%(12),MONTH$(12)
- 80 '
- 90 DIGITS$ = "1234567890"
- 100 CL$="1-2-3-4-5-6-7-8-9-0-":PI=3.1416
- 110 RESTORE 130
- 120 FOR I%=1 TO 12:READ MON%(I%):NEXT I%
- 130 DATA 31,28,31,30,31,30,31,31,30,31,30,31
- 140 '
- 150 FOR I%=1 TO 12:READ MONTH$(I%): NEXT I%
- 160 DATA JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
- 170 '
- 180 SYM23$="*": SYM28$="#": SYM33$="+": BLNK$=" "
- 190 CL$="1-2-3-4-5-6-7-8-9-0-":PI=3.1416
- 200 '
- 210 SCREEN 0: COLOR 7,0,0: CLS: LOCATE 3,35: PRINT "BIORHYTHMS": LOCATE 6,1:
- 220 PRINT "The theory of biorhythms is that we are influenced by three rhythms, physical,": PRINT
- 230 PRINT "emotional, and intellectual, beginning the day we are born. The first and": PRINT
- 240 PRINT "middle days of each cycle are considered critical days. In the biorhythm chart": PRINT
- 250 PRINT "which follows these days cross the dateline.": PRINT
- 260 PRINT: PRINT "If you have a printer, a printed copy may be made by printing the screen (shift" : PRINT
- 270 PRINT "PrtSc)."
- 280 LOCATE 20,1: LINE INPUT; "Enter name: ";WHOM$
- 290 LOCATE 21,1: PRINT STRING$(78," "): LOCATE 21,1: PRINT "What is ";WHOM$;"'s ";"birthdate? MM/DD/YY ";: LINE INPUT A$
- 300 ON ERROR GOTO 1370
- 310 '
- 320 IF INSTR (DIGITS$,MID$(A$,1,1)) = 0 THEN ERROR 0
- 330 N% = 1: IF INSTR (DIGITS$,MID$(A$,2,1)) <> 0 THEN N% = 2
- 340 M% = VAL(MID$(A$,1,N%))
- 350 IF M% < 1 OR M% > 12 THEN ERROR 0
- 360 '
- 370 S% = N% + 2
- 380 IF INSTR (DIGITS$,MID$(A$,S%,1)) = 0 THEN ERROR 0
- 390 N% = 1: IF INSTR (DIGITS$,MID$(A$,S%+1,1)) <> 0 THEN N% = 2
- 400 D% = VAL(MID$(A$,S%,N%))
- 410 IF D% < 1 OR D% > 31 THEN ERROR 0
- 420 '
- 430 S% = S% + N% + 1
- 440 Y% = VAL(MID$(A$,S%)): IF Y% = 0 THEN ERROR 0
- 450 IF Y% < 100 THEN Y% = Y% + 1900
- 460 IF Y% < 1582 THEN ERROR 0
- 470 '
- 480 LOCATE 22,1: PRINT STRING$(78," "): LOCATE 22,1: LINE INPUT "Start the biorhythm at: MM/YY "; A$
- 490 ON ERROR GOTO 1380
- 500 IF INSTR (DIGITS$,MID$(A$,1,1)) = 0 THEN ERROR 0
- 510 N% = 1: IF INSTR (DIGITS$,MID$(A$,2,1)) <> 0 THEN N% = 2
- 520 M1% = VAL(MID$(A$,1,N%))
- 530 IF M1% < 1 OR M1% > 12 THEN ERROR 0
- 540 '
- 550 S% = N% + 2
- 560 FOR I% = S% TO LEN(A$)
- 570 IF INSTR (DIGITS$,MID$(A$,I%,1)) = 0 THEN ERROR 0
- 580 NEXT
- 590 Y1% = VAL(MID$(A$,S%)): IF Y1% = 0 THEN ERROR 0
- 600 IF Y1% < 100 THEN Y1% = Y1% + 1900
- 610 IF Y1% < 1582 THEN ERROR 0
- 620 IF Y1% < Y% THEN ERROR 0
- 630 IF (Y1% = Y%) AND (M1% < M%) THEN ERROR 0
- 640 ON ERROR GOTO 0
- 650 '
- 660 DYS%=MON%(M%)-D%+1 'DAYS FROM BIRTH TO END OF MONTH
- 670 YEAR% = Y%: GOSUB 1400
- 680 IF M% <= 2 AND YEAR% = 0 THEN DYS%=DYS%+1 'LEAP YEAR
- 690 '
- 700 FOR I%=(M%+1) TO 12 'REST OF BIRTH YEAR
- 710 DYS%=DYS%+MON%(I%)
- 720 NEXT I%
- 730 '
- 740 YEAR% = Y1%-Y% -1 'YEARS IN BETWEEN
- 750 C23% = 20 * YEAR%
- 760 C28% = 1 * YEAR%
- 770 C33% = 2 * YEAR%
- 780 '
- 790 FOR I%= (Y%+1) TO (Y1%-1) 'LEAP YEARS IN BETWEEN
- 800 YEAR% = I%: GOSUB 1400
- 810 IF YEAR% = 0 THEN DYS%=DYS%+1
- 820 NEXT I%
- 830 '
- 840 FOR I%=1 TO (M1%-1) 'MONTHS
- 850 DYS%=DYS%+MON%(I%)
- 860 NEXT I%
- 870 '
- 880 YEAR% = Y1%: GOSUB 1400
- 890 IF M1% >= 2 AND YEAR% = 0 THEN DYS%=DYS%+1 'LEAP YEAR
- 900 '
- 910 C23%=(C23% + DYS%)MOD 23 'CALCULATE DAYS INTO CYCLE
- 920 C28%=(C28% + DYS%)MOD 28
- 930 C33%=(C33% + DYS%)MOD 33
- 940 '
- 950 CLS
- 960 '
- 970 PRINT "Biorhythm of ";LEFT$(WHOM$,25);" for ";MONTH$(M1%); Y1% ;TAB(55);"Birthdate is ";MONTH$(M%);D%;Y%
- 980 LOCATE 25,1: COLOR 0,15: PRINT SYM23$;" PHYSICAL ";
- 990 COLOR 0,12: PRINT SYM28$;" EMOTIONAL ";
- 1000 COLOR 0,9: PRINT SYM33$;" INTELLECTUAL";
- 1010 COLOR 7,0: PRINT SPC(10);"More BIORHYTHMS? Y/N ";:COLOR 23,0: PRINT "Y";
- 1020 LOCATE 13,9: COLOR 0,7: PRINT CL$;CL$;CL$;"1"
- 1030 '
- 1040 J%=MON%(M1%)
- 1050 YEAR% = Y1%: GOSUB 1400
- 1060 IF M1% = 2 AND YEAR% = 0 THEN J%=J%+1
- 1070 K%=1
- 1080 C% = 9
- 1090 P23=SIN(2*PI*CSNG(C23%)/23)
- 1100 P28=SIN(2*PI*CSNG(C28%)/28)
- 1110 P33=SIN(2*PI*CSNG(C33%)/33)
- 1120 PNN=P23: GOSUB 1280
- 1130 LOCATE INN%,C%: COLOR 0,15: PRINT SYM23$;
- 1140 PNN=P28: GOSUB 1280
- 1150 LOCATE INN%,C%: COLOR 0,12: PRINT SYM28$;
- 1160 PNN=P33: GOSUB 1280
- 1170 LOCATE INN%,C%: COLOR 0,9: PRINT SYM33$;
- 1180 K%=K%+1
- 1190 C% = C% + 2
- 1200 '
- 1210 C23%=C23%+1 'next day
- 1220 C28%=C28%+1
- 1230 C33%=C33%+1
- 1240 IF K% <= J% THEN 1090
- 1250 COLOR 7,0
- 1260 LOCATE 25,71: A$ = INPUT$(1): IF A$ = CHR$(13) OR A$ = "Y" OR A$ = "y" THEN RUN 10
- 1270 IF A$ = "N" OR A$ = "n" THEN CLS: END ELSE BEEP: GOTO 1260
- 1280 REM ROUTINE TO COMPUTE ROW NUMBER
- 1290 REM
- 1300 PSGN= SGN(PNN)
- 1310 PTT=PSGN*0.05
- 1320 IF PTT = 0 THEN PTT = 0.05
- 1330 PQQ=-(PNN+PTT)/0.1
- 1340 INN%=FIX(PQQ)+13
- 1350 RETURN
- 1360 '
- 1370 PRINT A$;" is an invalid date, please reenter";STRING$(20," "): BEEP: RESUME 290
- 1380 PRINT A$;" is an invalid date, please reenter";STRING$(20," "): BEEP: RESUME 480
- 1390 '
- 1400 IF YEAR% MOD 4 <> 0 THEN RETURN 'LEAP YEAR CALCULATION
- 1410 IF (YEAR% MOD 100 = 0) AND (YEAR% MOD 400 <> 0) THEN RETURN
- 1420 YEAR% = 0: RETURN
- 1430 '
- 1440 ' CLEAR KEYBOARD BUFFER
- 1450 '
- 1460 DEF SEG=0: POKE 1050,PEEK(1052)
- 1470 RETURN
- 1480 TD%=TD%+1:IF TD%=180 THEN GOTO 1500
- 1490 RETURN
- 1500 RUN
-